/**
 * 移动零问题
 * 使用快慢双指针解决，划分3个模块
 * [0,dest]为处理过的模块中非0部分，【dest + 1，cur]为0的模块模块
 * [cur + 1,len -1]为待处理模块
 * https://leetcode.cn/problems/move-zeroes/
 *
 * 随机复杂度：O（n)
 * 空间复杂度：O（1）
 */

class Solution {
    public void moveZeroes(int[] nums) {
        for(int dest = -1,cur = 0;cur < nums.length;cur++){
            //处理num【cur】为0
            if(nums[cur] != 0){
                //先交换，后++
                int tem = nums[dest + 1];
                nums[dest + 1] = nums[cur];
                nums[cur] = tem;
                dest++;
            }
        }
    }
}